﻿#pragma once
#include "yzrutil.h"

namespace yzrilyzr_soundbank{
	EBCLASS(SF2Modulator){
	public:
		static constexpr int const SOURCE_NONE=0;
		static constexpr int const SOURCE_NOTE_ON_VELOCITY=2;
		static constexpr int const SOURCE_NOTE_ON_KEYNUMBER=3;
		static constexpr int const SOURCE_POLY_PRESSURE=10;
		static constexpr int const SOURCE_CHANNEL_PRESSURE=13;
		static constexpr int const SOURCE_PITCH_WHEEL=14;
		static constexpr int const SOURCE_PITCH_SENSITIVITY=16;
		static constexpr int const SOURCE_MIDI_CONTROL=128*1;
		static constexpr int const SOURCE_DIRECTION_MIN_MAX=256*0;
		static constexpr int const SOURCE_DIRECTION_MAX_MIN=256*1;
		static constexpr int const SOURCE_POLARITY_UNIPOLAR=512*0;
		static constexpr int const SOURCE_POLARITY_BIPOLAR=512*1;
		static constexpr int const SOURCE_TYPE_LINEAR=1024*0;
		static constexpr int const SOURCE_TYPE_CONCAVE=1024*1;
		static constexpr int const SOURCE_TYPE_CONVEX=1024*2;
		static constexpr int const SOURCE_TYPE_SWITCH=1024*3;
		static constexpr int const TRANSFORM_LINEAR=0;
		static constexpr int const TRANSFORM_ABSOLUTE=2;
		int32_t sourceOperator=0;
		int32_t destinationOperator=0;
		int16_t amount=0;
		int32_t amountSourceOperator=0;
		int32_t transportOperator=0;
		int16_t getAmount(){
			return amount;
		}
		void setAmount(int16_t amount){
			this->amount=amount;
		}
		int32_t getAmountSourceOperator(){
			return amountSourceOperator;
		}
		void setAmountSourceOperator(int32_t amountSourceOperator){
			this->amountSourceOperator=amountSourceOperator;
		}
		int32_t getTransportOperator(){
			return transportOperator;
		}
		void setTransportOperator(int32_t transportOperator){
			this->transportOperator=transportOperator;
		}
		int32_t getDestinationOperator(){
			return destinationOperator;
		}
		void setDestinationOperator(int32_t destinationOperator){
			this->destinationOperator=destinationOperator;
		}
		int32_t getSourceOperator(){
			return sourceOperator;
		}
		void setSourceOperator(int32_t sourceOperator){
			this->sourceOperator=sourceOperator;
		}
	};
}
